<?php

	define('_LOGIN_','__login');
	define('_PWD_','__password');
	define('_REM_','__rememberMe');

	function autorise($arg=''){
		global $_SESSION;
		
		if(isset($_SESSION['user_rights']['su']))
			return(true);

		if(is_array($arg)){
		    foreach($arg as $arg1)
		        if(autorise($arg1)==true)
		            return(true);
		}elseif((isset($_SESSION['user_rights'][$arg]) && $_SESSION['user_rights'][$arg]) || $arg=='*')
			return(true);

        return(false);
	}

	function OUTorise(){
		$args=func_get_args();
		$st=autorise($args);
		
		if($st==false)
			die("Vous n'avez pas les droits nécessaires pour accéder à cette partie du site.");

		return($st);
	}


	function renvoyer_Droits($id){
		global $db;
	    $sql="select * from t_droits where membre_id='$id';";
	    
	    $rightsTb = $db->SelectAll($sql);
	    
	    if(!is_array($rightsTb)) $rightsTb=array();
	        
	    foreach($rightsTb as $droit)
	        $rights[$droit['droit_type']]=1;
	    
	    return($rights);
	
	}

	/*******************************************************
	* Function is_loggued()
	* Regarde si l'utilisateur en cours est déjà enregistré
	* Retourne :
	* 0 : Pas encore enregistré
	* 1 : Utilisateur enregistré
	* 2 : Mauvais utilisateur/Mot de passe
	* 3 : Pas d'user/pwd du tout
	* 4 : Compte non validé
	********************************************************/
	function logTry(&$tbl,$cook=false,$which=''){
		global $db,$param;

		if(!isset($tbl[_LOGIN_]) || $tbl[_LOGIN_]=='' || !isset($tbl[_PWD_]) || $tbl[_PWD_]=='')
			return 3;

		if(strlen($tbl[_PWD_])!=strlen(md5('toto')))
			$tbl[_PWD_]=getPwdMd5($tbl[_PWD_]);
        
        $tbl[_LOGIN_] = addslashes($tbl[_LOGIN_]);
        $tbl[_PWD_]   = addslashes($tbl[_PWD_]);
        
        
		$sql='
			select * from t_membres
			where membre_login="'.$tbl[_LOGIN_].'"
			and membre_md5="'.$tbl[_PWD_].'";';

		$db->Select($sql);


		
		// C'est bien le bon user/login
		if($db->Count==1){

			$row=$db->Next();

			$sql = 'update t_membres set membre_logtry=0 where membre_id='.$row['membre_id'].';';
			$db->Update($sql);

			$sql='select * from t_users where user_id='.$row['membre_id'].';';
			$user=$db->SelectFirst($sql);
			
			if($db->Count==0){
				$sql="INSERT into t_users
				(user_id,user_active,user_session_time, user_regdate )
				values('".$row['membre_id']."',1,UNIX_TIMESTAMP(),UNIX_TIMESTAMP());";
				$db->Insert($sql);
				$sql='select * from t_users where user_id='.$row['membre_id'].';';
				$user=$db->SelectFirst($sql);

			}

			// Utilisateur non encore identifié
			if($user['user_active']!=1 and $user['user_session_time']==0){
				return 4;
			}

			// Sinon tout est ok on joue
			//session_register('logged_in','is_su','user_id','user_login','user_password','user_session_time');
			$user_session_time=time();

			$sql='
				Update t_users
				set user_session_time="'.$user_session_time.'"
				where
				user_id="'.$row['membre_id'].'"';

			$db->Update($sql);

			$logged_in		= true;

			$id				= $row['membre_id'];
			$login			= $row['membre_login'];
			$password		= $row['membre_md5'];

			$_SESSION['logged_in']			=true;
			
			$_SESSION['user_rights']    	=renvoyer_Droits($row['membre_id']);
			
			$_SESSION['is_su']				=$_SESSION['user_rights']['su'];
			$_SESSION['user_is_su']			=$_SESSION['user_rights']['su'];
			$_SESSION['user_id']			=$id;
			$_SESSION['user_login']			=$login;
			$_SESSION['user_password']		=$password;
			$_SESSION['user_session_time']	=$user_session_time;
			$_SESSION['user']=$row;
			
			$sql='
			select responsable,equipe_id from t_membres as t_m inner join t_liens_mes as t_mes using(membre_id) inner join t_saisons
			as t_s using(saison_id) where saison_courante=1 and t_mes.membre_id='.$id.' group by equipe_id';

			$row=$db->SelectFirst($sql);

			$_SESSION['user_rights']['team_resp'] =isset($row['responsable']) ? $row['responsable'] : null;
			$_SESSION['user_team_id'] 			  =isset($row['equipe_id']) ? $row['equipe_id'] : null;

			if((isset($tbl[_REM_]) || $cook==true)){
				setcookie(_LOGIN_,$tbl[_LOGIN_],time()+3600*24*10); //3600 secondes = 1h * 24h * 10jours
				setcookie(_PWD_,$tbl[_PWD_],time()+3600*24*10);//3600 secondes = 1h * 24h * 10jours
			}
			
			$_SESSION[_LOGIN_]=$tbl[_LOGIN_];
			$_SESSION[_PWD_]=$tbl[_PWD_];

			unset($tbl);

			// Utilisateur OK
			return (1);
		}
		// Pas bon user/pwd
		else{
			unset($tbl);
			return 2;
		}
	}

	function is_currently_loggin(){
		// On essaye de se logguer
		if(isset($_COOKIE[_LOGIN_])){
			$ret=logTry($_COOKIE,true,'cook');
			if($ret!=1){
				// ON avait un login, mais pas le bon pwd, on vire alors cookie, et on essaye le reste
				setcookie(_LOGIN_,"",time()-10);
				setcookie(_PWD_,"",time()-10);
				$_COOKIE[_LOGIN_]=null;
				$_COOKIE[_PWD_]=null;
			} 
			else
				return 1; // Sinon c'est OK
		}

		// On essaye de se logguer
		if(isset($_SESSION[_LOGIN_])){
			$ret=logTry($_SESSION,true,'session');
			if($ret!=1){
				unset($_SESSION[_LOGIN_],$_SESSION[_PWD_]);
			} 
			else
				return 1; // Sinon c'est OK
		}

		if(isset($_POST[_LOGIN_]))
			return logTry($_POST);


		elseif(isset($_GET[_LOGIN_]))
			return logTry($_GET);

		return 0;
	}

	// Function : check_session_time
	// Checks if the session is still correct
	//
	function check_session_time(){
		$diff=time()-$_SESSION['user_session_time'];

		// On est supérieur au timeout maximum
		if($diff>SESSION_TIMEOUT){
			session_destroy();
			$_SESSION=null;
			bouge_de_la('./?page=dialog&dialog=timeout');
		}
		//sinon on remet a jour avec l'heure actuelle
		else
			$_SESSION['user_session_time']=time();
	}

    function getLogguedId(){
      
      $ret = commun::getLoggedMembreId();

//      if(isset($_SESSION['user_id'])){
//        $ret = $_SESSION['user_id'];
//      }

      return $ret;
    }

	// Function : is_loggued
	// Returns if the user is_loggued or not
	// Checks if the session is still active
	function is_loggued(){
		global $db;

		if(isset($_GET['clearLogin'])){
			if(isset($_SESSION['logged_in'])){
				setcookie(_LOGIN_,"",time()-10);
				setcookie(_PWD_,"",time()-10);
				$_COOKIE[_LOGIN_]=null;
				$_COOKIE[_PWD_]=null;
				session_destroy();
				$_SESSION=null;
				$_GET['clearLogin']=null;
			}
		}

		if(isset($_SESSION['logged_in']) && $_SESSION['logged_in']==1)
			check_session_time();

		if(isset($_SESSION['logged_in']) && $_SESSION['logged_in']==1
		&& isset($_SESSION['user_id'])
		&& $_SESSION['user_id']!=""
		&& isset($_SESSION['user_login'])
		&& $_SESSION['user_login']!=""
		&& isset($_SESSION['user_password'])
		&& $_SESSION['user_password']!=""){
			return 1;
		}
		$ret=is_currently_loggin();
		return ($ret == 1);
	}
?>
